10
תגובות

חסימת קללות

פתח razand ,
אני עובד על פינקציה שחוסמת קללות..
יש מערך שיש בו לדוגמה:
$array = array('wor*l','world*');


איך אני יכול לבדוק עם המילים בערך מופיעות במשפט שהוכנס.
וגם איך אני יכול לעשות ש * זה בעצם כל תו \ תוים שיש באמצע.

10 תשובות

avatar ענה KingYes ב 20 למאי 2013 #

אתה מכיר REGEX?
אתה יכול להכין מאגר ב-MySQL.. של כל הקללות.. ופשוט לבצע שאילתא עם LIKE ו-%.
ולעשות str_replace ל-* לתו %..

avatar ענה razand ב 20 למאי 2013 #

אי אפשר להשתמש במסד
זה קוד שיכול להיות בו המון בקשות לשרת...

avatar ענה dekelyi ב 20 למאי 2013 #

תיצור קובץ .txt שיכיל מילים שאתה רוצה לצנזר (מופרדות בפסיקים).

enter,any,word,here

בכל דף שבו אתה אמור להשתמש במילים האלו (לצינזור,לעריכה) (או בדף שיהיה included בכל הדפים) תעשה בקשת file_get_contents לקובץ ותפריד את הערכים.
$words = explode(',',file_get_contents('words.txt'))

בדפים שבהם אתה מצנזר (הדף שבו שולחים את הפוסטים או מה שזה לא יהיה), לפני ההכנסה למסד, תחליף את המילים בכוכביות לפי מספר התויים.
foreach ($words as $key => $word) str_replace($word,str_repeat('*',strlen($word)),$str);

avatar ענה razand ב 21 למאי 2013 #

אני לא צריך להחליף אני צריך רק true או false

avatar ענה dekelyi ב 21 למאי 2013 #

אז תבדוק בעזרת strpos אם המחרוזת נמצאת שם, אם כן תשנה את הערך לtrue ואם לא אז לfalse

foreach ($words as $key => $word) {
  $has = (strpos($str,$word) === false) ? false : true;
  // do something with this
}

avatar ענה razand ב 21 למאי 2013 #

ואת הקטע של ה *

avatar ענה dekelyi ב 21 למאי 2013 #

אז אתה כן רוצה להחליף את המילה בכוכביות?
תכניס את הקוד שבתוך ה-foreach שנתתי קודם לבלוק foreach החדש

foreach ($words as $key => $word) {
  $has = (strpos($str,$word) === false) ? false : true;
  str_replace($word,str_repeat('*',strlen($word)),$str);
  // do something with this
}

avatar ענה razand ב 21 למאי 2013 #

לא להחליף
אני רוצה ש * תיהיה כל מחרוזת אפשרית..

לדוגמה עם אני יעשה דו*גמה
אז עם יכתבו דוווווווווווווווווווווווווווווווווווגמה אז זה גם יחזיר False

avatar ענה dekelyi ב 22 למאי 2013 #

אז אז regex
וזה בידיוק כמו שכתבת: דו*גמה מסמל "דו"+האות ו' רצופה+"גמה".

$has = preg_match('/דו*גמה/g',$str)

avatar ענה ilikeme ב 22 למאי 2013 #

פשוט תמחק את ה* מהתו
$str = str_replace('*','',$str);